package org.finesys.common.hazelcast.core.base;

import java.util.concurrent.TimeUnit;

public interface DistributedCountDownLatch {

    /**
     * 等待
     *
     * @param timeout  等待最大时长
     * @param timeUnit 时间单位
     * @return true or false
     * @throws InterruptedException InterruptedException
     */
    boolean await(long timeout, TimeUnit timeUnit) throws InterruptedException;

    ;

    /**
     * 计数器-1
     */
    void countDown();

    /**
     * getCount
     *
     * @return count
     */
    int getCount();

    /**
     * 尝试设置计数器数值，0时成功
     *
     * @param count count
     * @return true or false
     */
    boolean trySetCount(int count);

    /**
     * 销毁集合
     */
    void destroy();

    /**
     * 获取集合名称
     */
    String getName();

}
